C++11 이전에는 C++ 표준은 "스레드 무관성("thread-agnostic")" POSIX 스레드(Pthreads) 또는 Win32 같은 플랫폼 전용 API에 의존했습니다. 현대적인 C++는 공식적인 메모리 모델 과 표준화된 동시성 API를 도입함으로써 언어를 혁신적으로 바꾸었습니다.
1. C++11의 '해저 변화'
C++11은 단일 스레드 추상 기계였던 언어를 <thread> 헤더와 std::thread을 통해 동시 실행을 내장된 방식으로 이해하는 것으로 변화시켰습니다. 이를 통해 멀티스레딩은 외부 라이브러리 문제에서 핵심 타입 시스템의 일부로 이동되었습니다.
2. 예외 보장
그리고 noexcept 지정자는 동시성 환경에서 매우 중요합니다. 이는 함수(예: 스레드의 진입점)가 예외를 전파하지 않겠다는 계약을 제공합니다. 만약 예외가 noexcept 경계를 벗어나면, std::terminate() 즉시 호출되어 정의되지 않은 상태 손상을 방지합니다.
3. 일관된 데이터 유형
표준화 과정에서는 long long int (C99에서 채택됨) 및 std::filesystem와 같은 유형을 포함하여, 스레드 간 공유될 때 하드웨어 간 데이터 폭과 시스템 상호작용이 일관되게 유지됨을 보장합니다.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>